import Vuex from 'vuex';
import Vue from 'vue';
Vue.use(Vuex);

import moduleA from './modules/moduleA';
import mutations from './mutations';
import actions from './actions';
import getters from './getters';

let state = {
    count: 1000,
    students: [{
        id: 111,
        name: "科比",
        age: 18
    }, {
        id: 112,
        name: "詹姆斯",
        age: 19
    }, {
        id: 113,
        name: "乔丹",
        age: 22
    }, {
        id: 114,
        name: "姚明",
        age: 40
    }]
}

/* 
    模块中的:
        getters:里面的函数的第一个参数:本模块的state,第二个参数:本模块的getters,第三个参数:rootState
        actions:在这里的函数中的context.commit只会调自己mutions中的函数

*/

const store = new Vuex.Store({
    state,
    //同步操作,唯一修改state的方式
    /* 
        mutations:对应commit
    */
    mutations,
    //异步操作
    /* 
        actions:对应dispatch
    */
    actions,
    //getters可以用来当计算属性使用
    getters,
    //用来划分模块
    modules: {
        moduleA
    }
});

export default store;